缓存管理

缓存管理
ROS在内存管理和缓存管理方面都是虚有其表——只有接口是一样的,里面的实现与windows大相径庭,以下资料来源于wrk,internals。
缓存管理是对于文件数据在内存中的特殊管理,基于内存管理,向文件系统提供服务。而在内存管理器将缓存页面真正写入磁盘时,又调用文件系统的接口然后走磁盘设备驱动。

★.重要结构
1.Virtual Address Control Block 虚拟地址控制块(核心) 结构不大~
描述了系统缓存的一个槽,系统缓存以256k为一个槽(也成为一个view),当进行读写操作时,数据才是活动的(Active),当不活动之后映射不会消失,除非缓存槽已经用尽,他们将被撤除。
CcVacbs是一个数组,记录了每个VACB的地址
typedef struct _VACB {
PVOID BaseAddress;
struct _SHARED_CACHE_MAP *SharedCacheMap;        被映射到一个文件时,它指向文件的共享缓存表
union {
LARGE_INTEGER FileOffset;                            这份视图在文件中的偏移
USHORT ActiveCount;                                引用计数
} Overlay;                                                
LIST_ENTRY LruList;                                    管理列表,空闲或者可重用的视图链表(CcVacbFreeList,CcVacbLru)
} VACB, *PVACB;       

2. PRIVATE_CACHE_MAP 存储于FILE_OBJECT之中的私有缓存表 属于文件对象
typedef struct _PRIVATE_CACHE_MAP {
union {
CSHORT NodeTypeCode;
PRIVATE_CACHE_MAP_FLAGS Flags;
ULONG UlongFlags;
};
ULONG ReadAheadMask;
PFILE_OBJECT FileObject;
LARGE_INTEGER FileOffset1;  //包含最近两次读的位置
LARGE_INTEGER BeyondLastByte1;
LARGE_INTEGER FileOffset2;
LARGE_INTEGER BeyondLastByte2;
LARGE_INTEGER ReadAheadOffset[2];

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值